"""
pandas基础教程10：案例综合练习

【案例】学生成绩数据分析
本案例综合运用pandas的创建、选取、统计、分组、缺失值处理、排序等功能。
"""
import pandas as pd
import numpy as np

data = {
    '姓名': ['张三', '李四', '王五', '赵六', '孙七'],
    '班级': ['一班', '一班', '二班', '二班', '一班'],
    '数学': [90, 85, np.nan, 92, 88],
    '英语': [80, 78, 85, np.nan, 90],
    '语文': [88, 90, 85, 87, 92]
}
df = pd.DataFrame(data)
print("原始数据：\n", df)

# 1. 缺失值处理：用平均分填充
for col in ['数学', '英语']:
    df[col] = df[col].fillna(df[col].mean())
print("\n缺失值处理后：\n", df)

# 2. 计算总分和平均分
df['总分'] = df[['数学', '英语', '语文']].sum(axis=1)
df['平均分'] = df[['数学', '英语', '语文']].mean(axis=1)
print("\n添加总分和平均分后：\n", df)

# 3. 按班级分组统计平均分
grouped = df.groupby('班级')[['数学', '英语', '语文', '总分', '平均分']].mean()
print("\n按班级分组的平均分：\n", grouped)

# 4. 按总分排序
sorted_df = df.sort_values(by='总分', ascending=False)
print("\n按总分降序排序：\n", sorted_df) 